package encryption

import (
	"crypto/rand"
	"crypto/rsa"
	"crypto/x509"
	"encoding/pem"
)

func Decrypt(data []byte) (string, error) {
	byteData := []byte(data)
	block, _ := pem.Decode([]byte(privateKey))

	priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
	if err != nil {
		return "", err
	}

	var sumDecryptBytes []byte
	for len(byteData) > 256 {
		newByte := byteData[:256]
		bytes, err := rsa.DecryptPKCS1v15(rand.Reader, priv, newByte)
		if err != nil {
			return "", nil
		}
		sumDecryptBytes = append(sumDecryptBytes, bytes...)
		byteData = byteData[256:]
	}
	bytes, err := rsa.DecryptPKCS1v15(rand.Reader, priv, byteData)
	if err != nil {
		return "", nil
	}
	sumDecryptBytes = append(sumDecryptBytes, bytes...)
	return string(sumDecryptBytes), nil
}
